perm filename MAC.FOT[TEX,DEK] blob sn#853185 filedate 1988-02-15 generic text, type T, neo UTF8
dispfun(prime);
                         2
(E17) PRIME(N, M) := IF P  > N THEN TRUE
                         M

                 ELSE (IF REMAINDER(N, P ) = 0 THEN FALSE ELSE PRIME(N, M + 1))
                                        M

(D17)                                DONE

(C18) 
for n thru k do print(n,p[n]);
1 2 
2 3 
3 5 
4 7 
5 11 
6 13 
7 17 
(D18)                                DONE

(C19) 
for n:19 step 2 thru 1000 do if prime(n,1) then print(k:k+1,p[k]:n);
8 19 
9 23 
10 29 
11 31 
12 37 
13 41 
14 43 
15 47 
16 53 
17 59 
18 61 
19 67 
20 71 
21 73 
22 79 
23 83 
24 89 
25 97 
26 101 
27 103 
28 107 
29 109 
30 113 
31 127 
32 131 
33 137 
34 139 
35 149 
36 151 
37 157 
38 163 
39 167 
40 173 
41 179 
42 181 
43 191 
44 193 
45 197 
46 199 
47 211 
48 223 
49 227 
50 229 
51 233 
52 239 
53 241 
54 251 
55 257 
56 263 
57 269 
58 271 
59 277 
60 281 
61 283 
62 293 
63 307 
64 311 
65 313 
66 317 
67 331 
68 337 
69 347 
70 349 
71 353 
72 359 
73 367 
74 373 
75 379 
76 383 
77 389 
78 397 
79 401 
80 409 
81 419 
82 421 
83 431 
84 433 
85 439 
86 443 
87 449 
88 457 
89 461 
90 463 
91 467 
92 479 
93 487 
94 491 
95 499 
96 503 
97 509 
98 521 
99 523 
100 541 
101 547 
102 557 
103 563 
104 569 
105 571 
106 577 
107 587 
108 593 
109 599 
110 601 
111 607 
112 613 
113 617 
114 619 
115 631 
116 641 
117 643 
118 647 
119 653 
120 659 
121 661 
122 673 
123 677 
124 683 
125 691 
126 701 
127 709 
128 719 
129 727 
130 733 
131 739 
132 743 
133 751 
134 757 
135 761 
136 769 
137 773 
138 787 
139 797 
140 809 
141 811 
142 821 
143 823 
144 827 
145 829 
146 839 
147 853 
148 857 
149 859 
150 863 
151 877 
152 881 
153 883 
154 887 
155 907 
156 911 
157 919 
158 929 
159 937 
160 941 
161 947 
162 953 
163 967 
164 971 
165 977 
166 983 
167 991 
168 997 
(D19)                                DONE

(C20) 
dsum(n):=if n<10 then n else remainder(n,10)+dsum(quotient(n,10));
(D20) DSUM(N) := IF N < 10 THEN N ELSE REMAINDER(N, 10) + DSUM(QUOTIENT(N, 10))

(C21) 
dsum(111);
(D21)                                  3

(C22) 
for n thru 168 do d[n]:dsum(p[n]);
(D22)                                DONE

(C23) 
d[168];
(D23)                                 25

(C24) 
ssum(n,m):=if p[m]↑2>n then dsum(n) else if remainder(p[m],n)=0 then d[m]+ssum(n
/p[m],m) else ssum(n,m+1);
                        2
(D24) SSUM(N, M) := IF P  > N THEN DSUM(N)
                        M

                                                    N
       ELSE (IF REMAINDER(P , N) = 0 THEN D  + SSUM(--, M) ELSE SSUM(N, M + 1))
                           M               M        P
                                                     M

(C25) 
ssum(8);
Too few arguments supplied to SSUM(N, M):
[8]

(C26) 
ssum(8,1);
(D26)                                  8

(C27) 
ssum(8,2);
(D27)                                  8

(C28) 
ssum(9,1);
(D28)                                  9

(C29) 
d[1];
(D29)                                  2

(C30) 
dispfun(ssum);
                        2
(E30) SSUM(N, M) := IF P  > N THEN DSUM(N)
                        M

                                                    N
       ELSE (IF REMAINDER(P , N) = 0 THEN D  + SSUM(--, M) ELSE SSUM(N, M + 1))
                           M               M        P
                                                     M

(D30)                                DONE

(C31) 
ss(n,m):=(print(n,m),if p[m]↑2>n then dsum(n) else if remainder(p[m],n)=0 then d
[m]+ss(n/p[m],m) else ssum(n,m+1);
Missing ")"
) ELSE SSUM ( N , M + 1 ) **$**   
Please rephrase or edit.

(C31) 
ss(n,m):=(print(n,m),if p[m]↑2>n then dsum(n) else if remainder(p[m],n)=0 then d
[m]+ss(n/p[m],m) else ssum(n,m+1));
                                    2
(D31) SS(N, M) := (PRINT(N, M), IF P  > N THEN DSUM(N)
                                    M

                                                   N
        ELSE (IF REMAINDER(P , N) = 0 THEN D  + SS(--, M) ELSE SSUM(N, M + 1)))
                            M               M      P
                                                    M

(C32) 
ss(8,1);
8 1 
(D32)                                  8

(C33) 
p[1];
(D33)                                  2

(C34) 
ssum(n,m):=if p[m]↑2>n then dsum(n) else if remainder(n,p[m])=0 then d[m]+ssum(n
/p[m],m) else ssum(n,m+1);
                        2
(D34) SSUM(N, M) := IF P  > N THEN DSUM(N)
                        M

                                                    N
       ELSE (IF REMAINDER(N, P ) = 0 THEN D  + SSUM(--, M) ELSE SSUM(N, M + 1))
                              M            M        P
                                                     M

(C35) 
ssum(8,1);
(D35)                                  6

(C36) 
ssum(9,1);
(D36)                                  6

(C37) 
smith(n):=if not prime(n,1) then (ssum(n,1)=dsum(n));
(D37)      SMITH(N) := IF NOT PRIME(N, 1) THEN SSUM(N, 1) = DSUM(N)

(C38) 
smith(22);
(D38)                                4 = 4

(C39) 
smith(n):=if prime(n,1) then false else if ssum(n,1)=dsum(n) then true else fals
e;
(D39) SMITH(N) := IF PRIME(N, 1) THEN FALSE

                            ELSE (IF SSUM(N, 1) = DSUM(N) THEN TRUE ELSE FALSE)

(C40) 
for n thru 25 do print(n,smith(n));
1 FALSE 
2 FALSE 
3 FALSE 
4 TRUE 
5 FALSE 
6 FALSE 
7 FALSE 
8 FALSE 
9 FALSE 
10 FALSE 
11 FALSE 
12 FALSE 
13 FALSE 
14 FALSE 
15 FALSE 
16 FALSE 
17 FALSE 
18 FALSE 
19 FALSE 
20 FALSE 
21 FALSE 
22 TRUE 
23 FALSE 
24 FALSE 
25 FALSE 
(D40)                                DONE

(C41) 
for n thru 1000 do(if remainder(n,25)=0 then print(n), sm[n]:smith(n));
25 
50 
75 
100 
125 
150 
175 
200 
225 
250 
275 
300 
325 
350 
375 
400 
425 
450 
475 
500 
525 
550 
575 
600 
625 
650 
675 
700 
725 
750 
775 
800 
825 
850 
875 
900 
925 
950 
975 
1000 
(D41)                                DONE

(C42) 
k:0;
(D42)                                  0

(C43) 
for n thru 1000 do if sm[n] then print(k:k+1,s[k]:n);
1 4 
2 22 
3 27 
4 58 
5 85 
6 94 
7 121 
8 166 
9 202 
10 265 
11 274 
12 319 
13 346 
14 355 
15 378 
16 382 
17 391 
18 438 
19 454 
20 483 
21 517 
22 526 
23 535 
24 562 
25 576 
26 588 
27 627 
28 634 
29 636 
30 645 
31 648 
32 654 
33 663 
34 666 
35 690 
36 706 
37 728 
38 729 
39 762 
40 778 
41 825 
42 852 
43 861 
44 895 
45 913 
46 915 
47 922 
48 958 
49 985 
(D43)                                DONE

(C44) 
cycle(x):=block([k],k:1,while s[k]<x do(if sm[x+s[k]] then print(x,s[k]),k:k+1))
;
(D44) CYCLE(X) := BLOCK([K], K : 1, WHILE S  < 
                                           K

                               X DO (IF SM       THEN PRINT(X, S ), K : K + 1))
                                          X + S                 K
                                               K

(C45) 
cycle(4);
(D45)                                DONE

(C46) 
for n thru 49 do cycle(s[n]);
58 27 
94 27 
319 27 
355 27 
378 4 
382 346 
454 274 
483 378 
517 378 
526 202 
MACSYMA was unable to evaluate the predicate:
SM
  1009

(C47) 
logout();
@
@k
~Killed Job 9, User KNUTH, TTY 65, at 15-Feb-88 15:47:09
 Used 0:04:28 in 0:32:57